// 这个文件的作用是通过 react-app-rewired 自定义 CRA 的 webpack 配置，
// 添加对路径别名和 .less 文件的支持，而无需通过 eject 暴露内部配置。

// config-overrides.js 文件是在使用 react-app-rewired 或类似工具时
// 用于覆盖和扩展 create-react-app (CRA) 默认的 webpack 配置而不需要eject的一个配置文件。
// 这个文件允许你在不暴露 CRA 内部配置的情况下，自定义和修改 webpack 配置。
const { aliasWebpack } = require("react-app-alias");


// 向 webpack 配置中添加对 .less 文件的支持。它通过修改 config.module.rules 来添加一个新的规则，
// 使得 webpack 能够处理 .less 文件。
// 这个规则使用了 style-loader, css-loader, 和 less-loader 来处理 .less 文件。
function addLessLoader(config) {
  config.module.rules[1].oneOf.splice(2, 0, {
    test: /\.less$/i,
    use: ["style-loader", "css-loader", "less-loader"],
  });
}

// 它接收一个 webpack 配置对象作为参数，然后使用 aliasWebpack 函数来应用路径别名的配置，
// 接着调用 addLessLoader 函数来添加 .less 文件的处理规则。
// 最后，修改后的配置对象被返回，这样 react-app-rewired 就可以使用这个新的配置来启动和构建项目。
module.exports = function override(config) {
  aliasWebpack({ tsconfig: "./tsconfig.json" })(config);
  addLessLoader(config);
  return config;
};
